[XEN] Fix the "early unshadow" optimization to look at the entire pte.
authorGeorge Dunlap <dunlapg@umich.edu>
Tue, 14 Nov 2006 16:21:26 +0000 (11:21 -0500)
committerGeorge Dunlap <dunlapg@umich.edu>
Tue, 14 Nov 2006 16:21:26 +0000 (11:21 -0500)
The optimization is designed to detect pagetable destruction, but re-uses the
pagetable entries to store data under certain conditions (paging, zeroing, &c);
sometimes the lower 8 bits are 0.  These "false positives" cause unnecessary
shadowing and unshadowing.

Signed-off-by: George Dunlap <gdunlap@xensource.com>
xen/arch/x86/mm/shadow/multi.c

index c8dfa28d6a40823413a0932609c71588a3d08d4f..d199c90bfb95a26ed543215b486ac513924df907 100644 (file)
@@ -3778,7 +3778,7 @@ sh_x86_emulate_write(struct vcpu *v, unsigned long vaddr, void *src,
         shadow_validate_guest_pt_write(v, mfn, addr, bytes_on_page);
         bytes -= bytes_on_page;
         /* If we are writing zeros to this page, might want to unshadow */
-        if ( *(u8 *)addr == 0 )
+        if ( *(u32 *)addr == 0 )
             check_for_early_unshadow(v, mfn);
         sh_unmap_domain_page(addr);
     }